package chainOfResponsibility;

/**
 * @author lvgo
 * @version 1.0
 * @Description: 项目管理器
 * @date 2019年3月14日16:04:10
 */
public abstract class AbstractProjectManager {

    /**
     * 设计
     */
    public static int DESIGN = 1;
    /**
     * 安排任务
     */
    public static int ARRANGEMENTS = 2;
    /**
     * 编码
     */
    public static int CODING = 3;

    /**
     * 下一个执行者
     */
    private AbstractProjectManager nextManager;

    /**
     * 任务级别
     */
    int level;

    public void setNextManager(AbstractProjectManager nextManager) {
        this.nextManager = nextManager;
    }

    /**
     * 要做的事
     *
     * @param level 任务类型
     * @param work  任务内容
     */
    protected void doWork(int level, String work) {
        if (this.level == level) {
            this.doing(work);
        } else {
            nextManager.doWork(level, work);
        }
    }

    /**
     * 执行任务
     *
     * @param work 任务内容
     */
    abstract protected void doing(String work);
}
